package com.gitee.wsl.security.crc

sealed class CrcParam(
   val width: Int,
   val poly: ULong = 0UL,
   val initial: ULong = 0UL,
   val xorOut: ULong = 0UL,
   val refIn: Boolean = false,
   val refOut: Boolean = false
){
      object CRC_32 : CrcParam(32, 0x04C11DB7UL, 0xFFFFFFFFUL, 0xFFFFFFFFUL, refIn = true, refOut = true)
   //companion object{

       object CRC_64  : CrcParam(64,0x42F0E1EBA9EA3693UL,0xFFFFFFFFFFFFFFFFUL,0xFFFFFFFFFFFFFFFFUL,refIn = true,refOut = true)
       object CRC_8   : CrcParam(8, 0x7U)
       object CRC_16  : CrcParam(16, 0x8005U, refIn = true, refOut = true)
       object CRC_4_ITU  : CrcParam(4, 3U, refIn = true, refOut = true)
       object CRC_5_EPC  : CrcParam(5, 9U, 9U)
       object CRC_5_ITU  : CrcParam(5, 0x15U, refIn = true, refOut = true)
       object CRC_5_USB  : CrcParam(5, 5U, 0x1FU, 0x1FU, refIn = true, refOut = true)
       object CRC_6_ITU  : CrcParam(6, 3U, refIn = true, refOut = true)
       object CRC_7_MMC  : CrcParam(7, 9U)
       object CRC_3_GSM  : CrcParam(3, 3U, xorOut = 7U)
       object CRC_3_ROHC  : CrcParam(3, 3U, 7U, refIn = true, refOut = true)
       object CRC_4_INTERLAKEN  : CrcParam(4, 3U, 0xFU, 0xFU)
       object CRC_6_CDMA2000_A  : CrcParam(6, 0x27U, 0x3FU)
       object CRC_6_CDMA2000_B  : CrcParam(6, 7U, 0x3FU)
       object CRC_6_DARC  : CrcParam(6, 0x19U, refIn = true, refOut = true)
       object CRC_6_GSM  : CrcParam(6, 0x2FU, xorOut = 0x3FU)
       object CRC_7_ROHC  : CrcParam(7, 0x4FU, 0x7FU, refIn = true, refOut = true)
       object CRC_8_ITU  : CrcParam(8, 0x7U, 0U, 0x55U)
       object CRC_8_ROHC  : CrcParam(8, 0x7U, 0xFFU, refIn = true, refOut = true)
       object CRC_8_MAXIM  : CrcParam(8, 0x31U, refIn = true, refOut = true)
       object CRC_8_AUTOSAR  : CrcParam(8, 0x2FU, 0xFFU, 0xFFU)
       object CRC_8_BLUETOOTH  : CrcParam(8, 0xA7U, refIn = true, refOut = true)
       object CRC_8_CDMA2000  : CrcParam(8, 0x9BU, 0xFFU)
       object CRC_8_DARC  : CrcParam(8, 0x39U, refIn = true, refOut = true)
       object CRC_8_DVB_S2  : CrcParam(8, 0xD5U)
       object CRC_8_GSM_A  : CrcParam(8, 0x1DU)
       object CRC_8_GSM_B  : CrcParam(8, 0x49U, xorOut = 0xFFU)
       object CRC_8_HITAG  : CrcParam(8, 0x1DU, 0xFFU)
       object CRC_8_I_CODE  : CrcParam(8, 0x1DU, 0xFDU)
       object CRC_8_LTE  : CrcParam(8, 0x9BU)
       object CRC_8_MIFARE_MAD  : CrcParam(8, 0x1DU, 0xC7U)
       object CRC_8_NRSC_5  : CrcParam(8, 0x31U, 0xFFU)
       object CRC_8_OPENSAFETY  : CrcParam(8, 0x2FU)
       object CRC_8_SAE_J1850  : CrcParam(8, 0x1DU, 0xFFU, 0xFFU)
       object CRC_8_AES  : CrcParam(8, 0x1DU, 0xFFU, refIn = true, refOut = true)
       object CRC_8_WCDMA  : CrcParam(8, 0x9BU, refIn = true, refOut = true)
       object CRC_10_ATM  : CrcParam(10, 0x233U)
       object CRC_10_CDMA2000  : CrcParam(10, 0x3D9U, 0x3FFU)
       object CRC_10_GSM  : CrcParam(10, 0x175U, xorOut = 0x3FFU)
       object CRC_11  : CrcParam(11, 0x385U, 0x01AU)
       object CRC_11_UMTS  : CrcParam(11, 0x307U)
       object CRC_12_CDMA2000  : CrcParam(12, 0xF13U, 0xFFFU)
       object CRC_12_DECT  : CrcParam(12, 0x80FU)
       object CRC_12_GSM  : CrcParam(12, 0xD31U, xorOut = 0xFFFU)
       object CRC_12_UMTS  : CrcParam(12, 0x80FU, refOut = true)
       object CRC_13_BBC  : CrcParam(13, 0x1CF5U)
       object CRC_14_DARC  : CrcParam(14, 0x0805U, refIn = true, refOut = true)
       object CRC_14_GSM  : CrcParam(14, 0x202DU, xorOut = 0x3FFFU)
       object CRC_15_CAN  : CrcParam(15, 0x4599U)
       object CRC_15  : CrcParam(15, 0x6815U, xorOut = 0x0001U)
       object CRC_16_MAXIM  : CrcParam(16, 0x8005U, xorOut = 0xFFFFU, refIn = true, refOut = true)
       object CRC_16_USB  : CrcParam(16, 0x8005U, 0xFFFFU, 0xFFFFU, refIn = true, refOut = true)
       object CRC_16_MODBUS  : CrcParam(16, 0x8005U, 0xFFFFU, refIn = true, refOut = true)
       object CRC_16_CCITT  : CrcParam(16, 0x1021U, refIn = true, refOut = true)
       object CRC_16_CCITT_false  : CrcParam(16, 0x1021U, 0xFFFFU)
       object CRC_16_X25  : CrcParam(16, 0x1021U, 0xFFFFU, 0XFFFFU, refIn = true, refOut = true)
       object CRC_16_XMODEM  : CrcParam(16, 0x1021U)
       object CRC_16_DNP  : CrcParam(16, 0x3D65U, 0x0000U, 0xFFFFU, refIn = true, refOut = true)
       object CRC_16_CDMA2000  : CrcParam(16, 0xC867U, 0xFFFFU)
       object CRC_16_CMS  : CrcParam(16, 0x8005U, 0xFFFFU)
       object CRC_16_DDS_110  : CrcParam(16, 0x8005U, 0x800DU)
       object CRC_16_DECT_R  : CrcParam(16, 0x0589U, xorOut = 0x0001U)
       object CRC_16_DECT_X  : CrcParam(16, 0x0589U)
       object CRC_16_EN_13757  : CrcParam(16, 0x3D65U, xorOut = 0xFFFFU)
       object CRC_16_DARC  : CrcParam(16, 0x1021U, 0xFFFFU, 0xFFFFU)
       object CRC_16_GSM  : CrcParam(16, 0x1021U, xorOut = 0xFFFFU)
       object CRC_16_CCITT_FALSE  : CrcParam(16, 0x1021U, 0xFFFFU)
       object CRC_16_ISO_IEC_14443_3_A  : CrcParam(16, 0x1021U, 0xc6c6U, 0U, true, true)
       object CRC_16_LJ1200  : CrcParam(16, 0x6f63U)
       object CRC_16_M17  : CrcParam(16, 0x5935U, 0xFFFFU)
       object CRC_16_MCRF4XX  : CrcParam(16, 0x1021U, 0xFFFFU, refIn = true, refOut = true)
       object CRC_16_NRSC_5  : CrcParam(16, 0x080bU, 0xFFFFU, refIn = true, refOut = true)
       object CRC_16_OPENSAFETY_A  : CrcParam(16, 0x5935U)
       object CRC_16_OPENSAFETY_B  : CrcParam(16, 0x755bU)
       object CRC_16_PROFIBUS  : CrcParam(16, 0x1dcfU, 0xFFFFU, 0xFFFFU)
       object CRC_16_RIELLO  : CrcParam(16, 0x1021U, 0xB2AAU, 0U, true, true)
       object CRC_16_SPI_FUJITSU  : CrcParam(16, 0x1021U, 0x1d0fU)
       object CRC_16_T10_DIF  : CrcParam(16, 0x8bb7U)
       object CRC_16_TELEDISK  : CrcParam(16, 0xa097U)
       object CRC_16_TMS37157  : CrcParam(16, 0x1021U, 0x89ecU, 0U, true, true)
       object CRC_16_UMTS  : CrcParam(16, 0x8005U)
       object CRC_17_CAN_FD  : CrcParam(17, 0x1685BU)
       object CRC_21_CAN_FD  : CrcParam(21, 0x102899U)
       object CRC_24_BLE  : CrcParam(24, 0x00065BU, 0x555555U, refIn = true, refOut = true)
       object CRC_24_FLEXRAY_A  : CrcParam(24, 0x5d6dcbU, 0xfedcbaU)
       object CRC_24_FLEXRAY_B  : CrcParam(24, 0x5d6dcbU, 0xabcdefU)
       object CRC_24_INTERLAKEN  : CrcParam(24, 0x328b63U, 0xFFFFFFU, 0xFFFFFFU)
       object CRC_24_LTE_A  : CrcParam(24, 0x864cfbU)
       object CRC_24_LTE_B  : CrcParam(24, 0x800063U)
       object CRC_24  : CrcParam(24, 0x864cfbU, 0xb704ceU)
       object CRC_24_OS_9  : CrcParam(24, 0x800063U, 0xFFFFFFU, 0xFFFFFFU)
       object CRC_30_CDMA  : CrcParam(30, 0x2030b9c7U, 0x3FFFFFFFU, 0x3FFFFFFFU)
       object CRC_31_PHILIPS  : CrcParam(31, 0x04c11db7U, 0x7FFFFFFFU, 0x7FFFFFFFU)
       object CRC_32_MPEG_2  : CrcParam(32, 0x04C11DB7UL, 0xFFFFFFFFUL)
       object CRC_32Q  : CrcParam(32, 0x814141abUL)
       object CRC_32_AUTOSAR  : CrcParam(32, 0xf4acfb13UL, 0xFFFFFFFFUL, 0xFFFFFFFFUL, refIn = true, refOut = true)
       object CRC_32D  : CrcParam(32, 0xa833982bUL, 0xFFFFFFFFUL, 0xFFFFFFFFUL, refIn = true, refOut = true)
       object CRC_32_BZIP2  : CrcParam(32, 0x04c11db7UL, 0xFFFFFFFFUL, 0xFFFFFFFFUL)
       object CRC_32_CD_ROM_EDC  : CrcParam(32, 0x8001801bUL, refIn = true, refOut = true)
       object CRC_32_POSIX  : CrcParam(32, 0x04c11db7UL, 0U, 0xFFFFFFFFUL)
       object CRC_32C  : CrcParam(32, 0x1edc6f41UL, 0xFFFFFFFFUL, 0xFFFFFFFFUL, refIn = true, refOut = true)
       object CRC_32_JAMCRC  : CrcParam(32, 0x04c11db7UL, 0xFFFFFFFFUL, refIn = true, refOut = true)
       object CRC_32_MEF  : CrcParam(32, 0x741b8cd7UL, 0xFFFFFFFFUL, refIn = true, refOut = true)
       object CRC_32_XFER  : CrcParam(32, 0x000000AFUL)
       object CRC_40_GSM  : CrcParam(40, 0x0004820009UL, 0U, 0xFFFFFFFFFFU)
       object CRC_64_ECMA_182  : CrcParam(64, 0x42F0E1EBA9EA3693UL)
       object CRC_64_GO_ISO  : CrcParam(64,0x000000000000001BUL,0xFFFFFFFFFFFFFFFFUL,0xFFFFFFFFFFFFFFFFUL,refIn = true,refOut = true)
       object CRC_64_MS  : CrcParam(64, 0x259C84CBA6426349UL, 0xFFFFFFFFFFFFFFFFUL, refIn = true, refOut = true)
       object CRC_64_REDIS  : CrcParam(64, 0xAD93D23594C935A9UL, refIn = true, refOut = true)
       object CRC_64_WE  : CrcParam(64, 0x42f0e1eba9ea3693UL, 0xFFFFFFFFFFFFFFFFUL, 0xFFFFFFFFFFFFFFFFUL)
       object CRC_64_XZ  : CrcParam(64,0x42F0E1EBA9EA3693UL,0xFFFFFFFFFFFFFFFFUL,0xFFFFFFFFFFFFFFFFUL,refIn = true,refOut = true)
   //}
}